home *** CD-ROM | disk | FTP | other *** search
- __________________________________________________________________________
-
- This is the Info-ZIP file INSTALL (for UnZip), last updated 23 Aug 94.
- __________________________________________________________________________
-
- Yes, this is a rather long file, but don't be intimidated: much of its
- length is due to coverage of multiple operating systems and of optional
- customization features, large portions of which may be skipped. --GRR
- __________________________________________________________________________
-
-
-
- To compile UnZip, UnZipSFX and/or fUnZip:
- =========================================
-
- (1) Unpack *.c and *.h (the actual source files), preserving the directory
- structure (e.g., ./unix/unix.c). The sole exception is TOPS-20, where
- tops20/* should be unpacked into the current directory, but TOPS-20
- is no longer fully supported in this version.
-
- If you wish to compile with decryption enabled, you must get the zcrypt
- package (see "Where"). Unpack crypt.c and crypt.h from the zcrypt ar-
- chive, overwriting the dummy versions supplied with UnZip. If you don't
- have any sort of unzipper available, you'll have to compile the non-
- crypt version first and use that to unpack the full crypt sources, then
- recompile. (The included zipcloak.c file is for use only with the Zip
- 2.0.x sources, so don't bother unpacking it.)
-
-
- (2) Choose the appropriate makefile based on the description in the Con-
- tents file for your OS (that is, there's only one for Unix or OS/2, but
- MS-DOS and several other OSes have several, depending on the compiler).
- Copy it into the current directory and rename if necessary or desired.
- (Some makefiles can be invoked in place; see (5) below.)
-
- Special point of confusion: some MS-DOS targets are in non-MSDOS
- makefiles. In particular, for DOS emx+gcc use the gccdos target of
- the OS/2 makefile (os2/makefile.os2), and for djgpp use the gcc_dos
- target of the Unix makefile (unix/Makefile). In addition, OS/2 users
- of MSC can cross-compile to MS-DOS with makefile.os2's mscdos target.
-
-
- (3) If you want a non-standard version of UnZip, define one or more of the
- following optional macros, either by adding them to the LOCAL_UNZIP
- environment variable or by editing your makefile as appropriate. The
- syntax differs from compiler to compiler, but macros are often defined
- via "-DMACRO_NAME" or similar (for one called MACRO_NAME). Note that
- some of these may not be fully supported in future releases (or even
- in the current release). Note also that very short command lines in
- MS-DOS (128 characters) may place severe limits on how many of these
- can be used; if need be, the definitions can be placed at the top of
- unzip.h instead (it is included in all source files).
-
- CHECK_EOF (recommended!)
- Corrupt zipfiles and zipfiles stored on damaged media (e.g., bad
- floppies) may cause UnZip to go into an infinite loop and either
- fill the disk(!) or, in some cases (notably under MS-DOS), hang the
- system. (This only applies to testing or extraction of *damaged*
- archives, however.) Defining CHECK_EOF enables special code which
- corrects the problem on most systems; DEC Ultrix may be one excep-
- tion. The only reason this option is not defined by default is that
- it was introduced too late in the testing process.
-
- DOSWILD (MS-DOS only)
- Treat trailing "*.*" like Unix "*" (i.e., matches anything); treat
- trailing "*." as match for files without a dot (i.e., matches any-
- thing, as long as no dots in name). Special treatment only occurs
- if patterns are at end of arguments; i.e., "a*.*" matches all files
- starting with "a", but "*.*c" matches all files ending in "c" *only*
- if they have a dot somewhere before the "c". Thus "*.*.*" could be
- used (albeit awkwardly) to specify all filenames with at least one
- dot in them, and "*." matches all filenames with no dots in them.
- [The default method of specifying these would be "*.*" and "* -x *.*",
- respectively, where the second example makes use of UnZip's exclude-
- files option.] All other regular expressions (including "?" and
- "[range_of_chars]") retain their Unix-like behavior.
-
- VMSWILD (VMS only)
- Use parentheses rather than brackets to delimit sets (ranges), and
- use '%' instead of '?' as the single-character wildcard for internal
- filename matching. (External matching of zipfile names always uses
- the standard VMS wildcard facilities; character sets are disallowed.)
-
- VMSCLI (VMS only)
- Use VMS-style "slash options" (/FOOBAR) instead of the default Unix-
- style hyphenated options (-f). This capability was added quite late
- in the beta cycle and isn't fully tested, so some features may not
- work as expected. Also, it doesn't affect options stored in environ-
- ment variables (UNZIP_OPTS or ZIPINFO_OPTS); those use the Unix style
- regardless.
-
- CHECK_VERSIONS (VMS only)
- UnZip "extra fields" are used to store VMS (RMS) filesystem info,
- and the format of this information may differ in various versions
- of VMS. Defining this option will enable UnZip warnings when the
- stored extra-field VMS version(s) do(es) not match the version of
- VMS currently being used. This is a common occurrence in zipfiles
- received from other sites, but since the format of the filesystem
- does not seem to have changed in years (including on Alpha and Open-
- VMS systems), the warnings are not enabled by default.
-
- RETURN_SEVERITY (VMS only)
- Return a VMS-style value in the range 0x7fff0001 to 0x7fff0332 for
- warnings or errors, or 1 for successful completion. See unzip.doc
- for an explanation of the encoding of the normal UnZip return value.
- This option was added late in the beta cycle and hasn't been tested
- much yet, but it will likely become the default in future versions
- (assuming no collisions with official VMS error codes).
-
- RETURN_CODES (VMS only)
- VMS interprets return codes according to a rigid set of guidelines,
- which means it misinterprets normal UnZip return codes as all sorts
- of really nasty errors. Therefore by default VMS UnZip always returns
- zero regardless of whether any warnings or errors occurred (but see
- RETURN_SEVERITY above). Define RETURN_CODES for a human-readable ex-
- planation of UnZip's return codes. Note that this is often annoying.
-
- ASM_CRC (Amiga/Aztec C only, for now)
- Use an assembler routine to calculate the CRC for each file (speed).
-
- ASM_INFLATECODES (Amiga/Aztec C only, for now)
- Use an assembler version of inflate_codes() for speed.
-
- OLD_EXDIR (not VMS or TOPS-20)
- Use old behavior regarding the directory to which to extract: the
- argument immediately after the zipfile name is the extraction dir;
- if the directory doesn't exist, create it if it was specified as
- "dir/" (i.e., with trailing path separator), else treat it as a
- stored file; if -d is used, treat the argument as a stored file re-
- gardless of trailing '/'. For example:
- unzip foo bar if bar is a dir, extract everything into it;
- otherwise extract bar as stored file
- unzip foo bar/ extract everything into bar, creating if nec.
- unzip -d foo bar/ treat bar/ as a stored directory and extract it
-
- SFX_EXDIR
- Enable the "-d <extract_dir>" option for UnZipSFX. By default it is
- disabled so as to generate the smallest possible executable stub, but
- for use with automated installation scripts and the like it may be
- useful to enable -d. Be sure to read unzipsfx.doc for restrictions
- on the use of this option and of -x; these restrictions should be
- lifted in a later release.
-
- NO_ZIPINFO
- Compile without zipinfo mode (-Z) enabled; makes a smaller executable
- because many text strings are left out. Automatically enabled for
- some small-model compiles under MS-DOS and OS/2, so ordinarily there
- is no need to specify this explicitly. (Note that even with this
- defined, the resulting executable may still be too big to extract
- some zipfiles correctly.)
-
- DEBUG
- Used for debugging purposes; enables Trace() statements. Generally
- it's best to compile only one or two modules this way.
-
- DEBUG_TIME
- Used for debugging the timezone code in file_io.c; enables TTrace()
- statements. This code is only used for the freshen/update options
- (-f and -u), and non-Unix compilers often get it wrong.
-
-
- (4) If you regularly compile new versions of UnZip and always want the same
- non-standard option(s), you may wish to add it (them) to the LOCAL_UNZIP
- environment variable (assuming it's supported in your makefile). Under
- MS-DOS, for example, add this to AUTOEXEC.BAT:
-
- set LOCAL_UNZIP -DDOSWILD -DOLD_EXDIR
-
- You can also use the variable to hold special compiler options (e.g.,
- -FPi87 for Microsoft C, if the x87 libraries are the only ones on your
- disk and they follow Microsoft's default naming conventions; MSC also
- supports the CL environment variable, however).
-
-
- (5) Run the make utility on your chosen makefile:
-
- Unix
- For most systems it's possible to invoke the makefile in place, at
- the possible cost of an ignorable warning; do "make -f unix/Makefile
- list" to get a list of possible system targets, and then "make -f
- unix/Makefile target" for your chosen target. The "generic" target
- works for most systems, but if it fails with a message about ftime()
- unresolved or timezone redefined, do "make clean", "make help", and
- then either "make generic2" or "make generic3" as instructed. If all
- else fails, read the makefile itself; it contains numerous comments.
-
- VMS
- For a one-time build of the default UnZip, simply run the supplied
- command file MAKE.COM. To use either DEC C on an Alpha or VAX C on
- a VAX, type "@make" (after copying make.com into the current direc-
- tory; otherwise do "@[.vms]make" to invoke it in place). To use GNU
- C (gcc) on either platform, do "@make gcc".
-
- For repeated makes or other hacker-like tinkering with the sources,
- or to create a custom version of UnZip (especially with VMSCLI), use
- the included "MMS" makefile, DESCRIP.MMS. Copy it into the current
- directory, read the comments at the top of it and run MadGoat's free
- MMS clone "MMK" on it. DEC's MMS is no longer supported due to the
- use of MMK-specific extensions in DESCRIP.MMS.
-
- MS-DOS
- See the msdos\Contents file for notes regarding which makefile(s) to
- use with which compiler. In summary: pick one of msdos\makefile.*
- as appropriate, or (as noted above) use the OS/2 gccdos target for
- emx+gcc or the Unix gcc_dos target for djgpp. There is also an
- mscdos cross-compilation target in os2\makefile.os2, an sco_dos
- cross-compilation target in unix\Makefile and bcc_dos and msc_dos
- targets in unix\Makefile as well. The latter may disappear soon.
- For Watcom 16-bit or 32-bit versions, see the comments in the OS/2
- section below.
-
- After choosing the appropriate makefile and editing as necessary or
- desired, invoke the corresponding make utility. Microsoft's NMAKE
- and the free dmake and GNU make utilities are generally the most
- versatile. Unfortunately, all current ports of GNU make 3.71 (djgpp,
- emx and gnuish flavors) have bugs which prevent their use with the
- Unix makefile; the older djgpp port of make 3.69 still works and for
- now is distributed with the MS-DOS executables on the primary Info-
- ZIP mirror site (see the Where file). The makefiles in the msdos dir-
- ectory can be invoked in place (e.g., "nmake -f msdos\makefile.msc"),
- but the MS-DOS targets in the Unix makefile (gcc_dos, bcc_dos and
- msc_dos) cannot.
-
- OS/2
- Either GNU make, nmake or dmake may be used with the OS/2 makefile;
- all are freely available on the net. Do "nmake -f os2\makefile.os2",
- for example, to get a list of supported targets. For Watcom C/386 it
- is necessary to edit makefile.os2 and change the os2$(OBJ) target so
- it uses backslashes (i.e., "os2/os2.c" -> "os2\os2.c"). For Watcom
- 16-bit OS/2 versions or any Watcom DOS version (cross-compilation),
- or for Metaware High C++ (OS/2 32-bit), it is necessary to apply the
- patch in os2\wat_met.dif. (This patch arrived too late to be fully
- tested.)
-
- More generally, read the comments at the top of the makefile for an
- explanation of the differences between some of the same-compiler tar-
- gets.
-
- NT (also applies to Chicago/Windows 4)
- You will need the Windows NT SDK or Visual C++ for NT, both from
- Microsoft; or DEC C/C++ for DECpc AXP and NT. Use the command line
- to compile. For the DEC compiler edit out the "cdebug" line in
- nt\makefile as noted in the comments at the top of the makefile.
- From the main source directory do "nmake -F nt\makefile".
-
- If you are using VC++ you will get warnings about CL386 invoking CL,
- etc. Don't worry, this is for compatibility with the SDK. Microsoft
- should have changed the definition of $(cc) in ntwin32.mak for VC++.
-
- If you have VC++ 1.5 (16-bit) installed together with VC++ 1.0 (32-
- bit), make sure that you don't run the 16-bit compiler when you run
- nmake.
-
- At least with MSC 8.x (VC++ 1.x), it is possible to make a dual-mode
- self-extractor (DOS and NT/Chicago). This is not built by default,
- but for those who don't care too much about the size, here's how:
-
- From: Steve Salisbury <stevesa@microsoft.com>
- Date: Fri, 22 Jul 94 17:18:06 PDT
-
- Did y'all know that you can build a dual mode (MS-DOS and Win32
- (NT + Chicago)) unzipsfx.exe by just making a 16-bit unzipsfx.exe
- and then specifying that as the 16-bit stub for the 32-bit unzip-
- sfx.exe? You also have to specify the /Knoweas flag to the 16-bit
- linker. I suspect that this won't work with C 6.0 and earlier,
- maybe not even with MS C/C++ 7.0. Anyway, I use C 8.0 (a.k.a.
- Visual C 1.X), which has been shipping for 15+ months now.
-
- Make a little change to MSDOS\MAKEFILE.MSC to add the /KNOWEAS
- flag:
-
- LDFLAGS = /KNOWEAS /nologo/noi/e/st:0x0c00
-
- rename the output file
-
- ren UNZIPSFX.EXE UNZIPSFX.E16
-
- and then make a little change to NT\MAKEFILE to add the -STUB
- directive:
-
- .obj.exe:
- $(link) $(ldebug) $(conflags) $(conflibs) $** \
- -out:$@ -STUB:$*.e16
-
- This is pretty useful. It's nice to have dual-mode self-extracting
- files.
-
- I do notice that they are pretty huge files (41K for 16-bit
- unzipsfx.exe, 69k for the 32-bit version, 110k for the dual). Oh
- well.
-
- AmigaDOS
- SAS/Lattice C and Manx Aztec C are supported. For SAS C 6.x do "lmk
- -f amiga/SMakeFile all"; for Aztec C do "make -f amiga/makefile.azt
- all". The Aztec C version supports assembly-language versions of two
- routines; these are enabled by default.
-
- Atari TOS
- Turbo C is no longer supported; use gcc (tested with 2.4.5 and 2.5.8)
- and the MiNT libraries, and do "make". Note that all versions of gcc
- prior to 2.5.8 have a bug affecting 68000-based machines (optimizer
- adds 68020 instructions). See atari\README for comments on using
- other compilers.
-
- Macintosh
- Think C is the only currently supported compiler, although the Mac
- Programmer's Workbench (MPW) was supported at one time and still has
- hooks in unzip.h. For Think C, un-BinHex the Think C project file
- and UnZip resource file (using BinHex 4.0 or later), then click on
- something or other... :-) (I'm just making this up, since I haven't
- the faintest idea how Mac programming works.)
-
- Human68K
- [This is a Japanese machine and OS.] It appears that GNU make and
- gcc are required; presumably just do "gmake -f human68k/Makefile.gcc"
- to build everything.
-
- TOPS-20
- [No longer fully supported due to new, unported features, although
- patches always accepted.] Unpack all files into the current directory
- only (including those in the zipfile's tops20 directory), then use
- make.mic and "do make".
-
- Running the appropriate make utility should produce three executables on
- most systems, one for UnZip/ZipInfo, one for UnZipSFX, and one for fUnZip.
- (VMS is one prominent exception: fUnZip makes no sense on it.) Read any
- OS-specific README files for notes on setting things up for normal use
- (especially for VMS) and for warnings about known quirks and bugs in var-
- ious compilers (especially for MS-DOS).
-
- Also note that many OSes require a timezone variable to be set correctly
- (often "TZ"); Unix and VMS generally do so by default, but PC-based OSes
- generally do not. See the discussion of the -f and -u options in the
- unzip man page (or unzip.doc).
-
- Then test your new UnZip on a few archives and let us know if there are
- problems (but *please* first make certain that the archives aren't actu-
- ally corrupted and that you didn't make one of the silly mistakes dis-
- cussed in the documentation). If possible, test with PKUNZIP or with a
- previous version of UnZip, if you have one.
-
-
-
- To install:
- ===========
-
- Unix
- The default prefix for the installation location is /usr/local (things
- go into the bin and man/man1 subdirectories beneath the prefix), and
- the default man-page extension is "1" (corresponding to man/man1, above).
- To install as per the defaults, do "make install"; otherwise do "make
- prefix=/your/path manext=your_extension install". For example, to install
- in your home directory with "l" as the man-page extension (for "local"),
- do "make prefix=$HOME manext=l install". Permissions will be 755 for the
- executables and 644 for the man pages. In general root must perform in-
- stallation into a public directory. Do "rehash" if your shell requires
- it in order to find the new executables.
-
- VMS
- Install UnZip as foreign symbol by adding this to login.com:
-
- $ unzip == "$disk:[dir]unzip.exe"
- $ zipinfo == "$disk:[dir]unzip.exe ""-Z"""
-
- where "disk" and "dir" are the location of the UnZip executable; the "$"
- before the disk name is important, as are the double-double-quotes around
- the -Z. Some people, including the author, prefer a short alias such as
- "ii" instead of "zipinfo"; edit to taste. Optionally also install unzipsfx
- for use with the MAKESFX.COM command file. See vms/README (or [.VMS]README.)
- for details on this and for notes/warnings about zipfiles and UnZip under
- VMS.
-
- OS/2, MS-DOS, NT, Atari, Amiga
- Move or copy unzip.exe (or unzip.ttp, or UnZip, or whatever) to a direc-
- tory in your path; also possibly copy the UnZip executable to zipinfo.exe
- (or ii.exe), or else create an alias or a batch or command file for zipinfo
- ("@unzip -Z %1 %2 %3 %4 %5 %6 %7 %8 %9" under MS-DOS). The latter is only
- relevant if NO_ZIPINFO was not defined, obviously...
-
- Macintosh, Human68K, TOPS-20
- Dunno...
-